/*
 * Copyright (c) 2011 Toni Spets <toni.spets@iki.fi>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include <wolapi.h>

#ifndef _IDOWNLOAD_H_
#define _IDOWNLOAD_H_

/* IDownload Interface */

extern const GUID IID_IDownload;

typedef struct _IDownload       IDownload;
typedef struct _IDownloadVtbl   IDownloadVtbl;

struct _IDownload
{
    IDownloadVtbl   *lpVtbl;
};

struct _IDownloadVtbl
{
    /* IUnknown */
    HRESULT(__stdcall *QueryInterface)  (IDownload *, const IID* const riid, LPVOID * ppvObj);
    ULONG(__stdcall *AddRef)            (IDownload *);
    ULONG(__stdcall *Release)           (IDownload *);

    /* IDownload */
    HRESULT(*DownloadFile)              (IDownload *, LPSTR Server, LPSTR login, LPSTR password, LPSTR file, LPSTR localfile, LPSTR regkey);
    HRESULT(*Abort)                     (IDownload *);
    HRESULT(*PumpMessages)              (IDownload *);
};

#endif
